Возможно идёт перезапись переменных, из-за чего не всё удаляется. Актуально с глобалками
Смотрите в сторону мультиплеерности.
Если в ваших тестах с одним героем всё хорошо, то не факт что всё будет хорошо, если одновременно кастанутся 2 одинаковых спелла, которые построены на одних и тех же переменных.
E: Unit starts the effect of an ability.
C: Ability being cast =
A: Set Casting unit Life to (Life of Casting unit + 200).
Вот скрин настройки действия.
Собственные попытки в студию, что не получается?
Напомним - ЭТО НЕ СТОЛ ЗАКАЗОВ, здесь задают вопросы про реализацию тех или иных вопросов, спрашивают про ошибки, оптмизацию, отдельные функции. Я не увидел в вашем вопросе ничего кроме невнятного описания механики способности, " вокргу кого то там огненные столбы возникают, и еще порча"...
Происходящее здесь напомнило мне один случай из моего далекого прошлого. В те времена я еще только начинал осваивать редактор. Одна из тем, которая меня заинтересовала и по которой мне не удалось найти достаточно полной информации - утечки. Тогда я пошел на один форум и задал простой вопрос о том, как определить наличие и степень серьезности утечек в карте, не перебирая весь код. В результате я получил тонну флуда и "ответ от профи", с которым все в итоге согласились - фрагмент кода с ценным указанием "если это число растет быстро - утечек много, если медленно - мало или нет вовсе". Код представлял из себя таймер с малым периодом, который создавал объект, брал его хендл, писал в чат и удалял объект, но был один нюанс - создаваемый объект утекал на каждой итерации таймера.
Ну с таймером я хз, проверял раз 10 карту, никаких проблем не было, по поводу тренировочного лагеря, если без костылей, тут нужна хэш-таблица, а её я могу юзать только через код
зависит от твоих нужд
например, мне нужно хранить последние 5 секунд позиций нескольких юнитов, т.е. разбитые на участки по 0.25 секунд снимки хп/мп/координат каждого из них
это 5*4 = 20 значений каждого, итого 80
когда мы доходим до секунды 5.25, то надо сдвигать все предыдущие на единичку назад, и вставлять текущие данные на последний слот
это 79*4 операций чтения и 80*4 записей (считаю грубо, всё для примера)
когда это делается в хештбалице, нагрузка значительно выше выходит, чем если делать на массивах (хт перебирает ключи как ассоциативный массив, а обычный массив просто обращается к памяти с указанным адресом, в разы быстрее).
Но чтобы делать эту процедуру на массивах, тебе нужен индексатор этих самых юнитов, чтобы их уникальный ключ не превышал лимит массива. Это дополнительный код, который тебе нужно реализовать с нуля. Но после реализации система становится быстрее.
Была она до этого медленной? да. Влияло ли это на игру? Нет, это 100-200 микросекунд.
Опять же, когда у тебя есть пре-процессор типа vJASS + сниппеты типа Table , которые имитируют массив самостоятельно, они снимают с тебя часть обязанностей. Но из-за того, что они созданы для ОБЩЕГО случая, они все равно не дадут того выигрыша в скорости, который можешь ожидать.
Используй то, что тебе удобнее, и оптимизируй только когда это реально влияет на игру. habr.com/ru/post/550926
И не забывай, что дота стала популярной еще во времена, когда была написана почти целиком на ГУИ и нихера в ней не пахло даже оптимизацией.
Таймеры не могут создаваться при инициализации карты, так как действия инициализации проходят не тогда, когда проходит загрузка и запускается сама карта, а сразу как начинается загрузка.
period - 0.05, период обновления
cd - длительность, сколько должен заполнятся хп бар
это у меня был фрейм перезарядки, слева направо адаптируйте под себя
function StartFrameCD(cd, fh,period)
local amount = period*100 / cd
local full = 0
TimerStart(CreateTimer(), period, true, function()
full = full + amount
BlzFrameSetValue(fh, full)
if full >= 100 then
DestroyTimer(GetExpiredTimer())
full = 0
end
end)
end
Это работает железно, я так делаю каст бары из фреймов или эффектов, вот ещё пример
Если есть тимвиверные лаги, есть ещё миллион других программ для удалёнки, AnyDesk или Spleshtop (вроде платный, но это не проблема)
Но я делал по другому: по впн цеплялся домой на роутер, на домашнем компе на Win 10 pro создавал второго пользователя (в принципе можно и создавать и не патчить десятку под сервер), подключался через удалённый рабочий стол к домашнему компу и в принципе всё, vpn соедение на убунте хз где, но remmina для удалённого рабочего стола есть точно, ну или параллелс десктоп в режиме rdp.
Если ничего не понятно, то могу подробно расписать что и как я делал
Так же никто не отменял поставить варик на любой комп в рабочей сети (если есть доступ на такие пакости), хоть на компьютер бухглатера и в режиме второго пользователя сидеть по RDP на этом компе, WE вроде сильно не грузит =)
BartSi, очень странно.
Нашёл проблему. В редакторе ландшафта нужно выбрать Camera Palette (там где юниты, декорации и прочее) выбрать первую строчку (камера без имени) и удалить. Тогда проблема решится. Сбросил триггеры и удалил камеру.
Ошибка из-за того, что у камеры почему-то пустое имя. Из-за этого её переменная оканчивается на _, что нельзя в JASS.
8gabriel8, ни разу не сталкивался с вылетами редактора при длительной работе. Как я считаю, Reforged переписал пути к WC3 в регистре, из-за чего старый редактор перестал работать, но это лишь догадка.
Было создано 22 366 679 экземпляров класса CUnitListNode, которые заняли 255.9 МБ памяти.
При очередной попытке выделения, игра упала.
Виной всему утечки памяти: за 21 минуту набралось 80 тысяч групп и 20 тысяч точек.
Также, из-за выполнения большого количества кода, сильно лагает.
На стадии выбора героя (первые две минуты), выполняется 550 000 операций в секунду, а далее — 1 200 000.
Для сравнения: лимит потока — 300 000 операций.
Хорошо, что ты приложил карту, так как в логе маловато информации.
nvc123, увы там дефолт ИИ, недаст особо управлять мобами.
Щяс скину пример из доты но более понятный, как заставить нейтралов ходить и атаковать.
Вот вам пример контроля нейтралами.
Если игрок атакует шахту, которая ему не принадлежит и имеет запас здоровья 1000 или меньше, должна ли последняя перейти в его владение? Или может после перехода во владение шахта должна увеличивать свой запас здоровья, чтобы он стал больше 1000?
Событие - Любой юнит получает урон
Условие - (Тип Triggering Unit равно Х) И (Здоровье Triggering Unit - Полученный урон <= 0.)
Действия
Установить получаемый урон на 0.
Уставить владельца Triggering Unit: Владелец источника урона.
Установить здоровье для Triggering Unit на 100%.
Далее, мне сделали способность в заказах, я перенес на карту и она работала при проверке. Когда я удалил героя проверки, то способность перестала работать, хотя там не указывается юнит. В чем причина — непонятно
Причина в твоих руках, которые решили поломать спелл)
Скрин с моего спелла
И отредаченный тобой
Ну и небольшой совет, если ты продолжишь лепить карту в таком духе, то рано или поздно действия с открытием вкладки переменных юнитов у тебя начнут дико виснуть, а большое кол-во блокираторов заставят карту компилиться пол часа
Но если это приближённый к идеальному размеру, тогда пофиг
абилку поправил, помимо этого ещё разрешенные цели не были указаны верно
С драгуном хз, я сбросил пару данных и всё заработало
ну дай фриз юниту просто
но это не только убор скорости, это убор вообще всего, это по сути превращение в овоща со слюнями изо рта до момента, пока ты не заанпауишь юнита
если не покатит, то устраивай клоунаду
ройся в стандартных абилках
можешь вот как с яйцом предложили, можешь безэффектный баш швырять в лицо ублюдку (хотя это тоже фриз будет тащемта), можешь спавнить даммика с пасосом (одержимость баньши) и заставлять кастовать его 999 секунд и прогонять даммика, когда тебе нужно, можешь руты кипера бросать: тоже безэффектные + без дамага
хочется чтобы эта замена происходила не моментально, а через какое то время (на подобии обучения в зданиях),
Юзай однократный таймер (или же если таких юнитов будет очень много, то загони весь этот скот в группу отдельную и сделай пустышную абилку родную им с 10 ЛВЛами и, условно, каждую минуту каждому юниту из группы этой снижай лвл на 1 этой абилки-пустышки периодиком, а когда будет = 1, то морфи в нужного юнита), вейты - зло. Но минус в том, что если это мелкая темка, то на неё целый лишний триггер будет.
Ладно, раз менее костыльного решения проблемы нет, сделал дополнительное исследование (скрытое), которое триггерно изучается при изучении 3-го левела оригинального улучшения.
Wyett, ты можешь добавлять подобные этим:
function ... takes ... returns ...
Код
endfunction
Резака купить можно, но это будет абсолютно не похоже на покупку дирижабля.
Событие: Время - Elapsed 600 sec.
Условие:
Действие: Группа игроков - Pick up (All players) and do actions
Отряд - Pick up (Units of (Picked player) and ((Matching unit) не равно Здание равно Да)) and do actions
Боевая единица - Move (Picked unit) instantly to (куда надо)
"Открыть редактор реестра (Windows + R, ввести regedit).
Перейти по пути HKEY_CURRENT_USER\SOFTWARE\Blizzard Entertainment\WorldEdit.
Найти строку Tool Windows и удалить ее.
Готово. Теперь редактор старых версий будет работать. Но проблема повторится, если зайти в редактор 1.32. При ее возникновении нужно заново удалить строку Tool Windows."
Ё-маё. Просто в самом начале редактора ии выбираешь расу - вместо орков ставишь не стандартная раса(это не обязательно).
Потом копируешь все данные о войсках в свой ИИ - о всё.
Я думаю нет, у ИИ четко прописано кого брать в атаку и кто эти юниты, артелерия, воздух, поддержка.
Твой дракон не подходит ИИ и он его игнорирует, нужно модифицировать ИИ, либо брать стандартного юнита и на его основе сделать дракона, но опять же, роль должна быть та же, то ИИ начнет пытатся добывать лес драконом, считая его вурдалаком.
Стандартные войска - это то, что есть изначально в варике. Все остальные войска, которые ты создаёшь - нестандартные юниты. Фишка в том, что стандарт/нестандарт - понятия редактора и с геймплеем никак не связаны.
Если же ты хочешь, чтобы в алтаре можно было призвать твоего юнита - редактируй алтарь, у него есть список героев. Но тогда надо ещё добавить твоего героя в константы, иначе он не будет входить в лимит "стандартных" героев.
Урон настраивается через уровень способности, или как было сказано unit - damage target
команда для использования нестандартной способности берется от той способности, на основе которой ты её сделал, и если это цепь тралла - Unit - issue order with targetign a unit - orc - chain lighting
Вам понадобится привязывать значение к вашему юниту с каменными доспехами. Если требуемых привязок будет несколько - стоит использовать базу данных.
Требуемое:
Массив групп юнитов(массив всегда содержит 8192 элемента (индексы 0-8191), но данные массива типа group следует инициировать через создание групп). Будет задействовано по 1 группе на время действия способности.
Засовываем каменные доспехи в скрываемый (для игрока) спеллбук, выдаем спеллбук юниту с каменными доспехами. Даем юниту активку-пустышку вроде берсерка троллей (можно кастовать не прерывая текущий приказ). Отлавливаем её каст. После каста - выделяем группу под хранение целей, которым было нанесено 100 урона в качестве ответки. Отлавливаем событие получения урона, проверяем наличие баффа способности-пустышки. Если бафф есть и урон больше 0 ед. (по хорошему нужно еще отделить урон от обычной атаки от магического, но это отдельная тема. Гуглите 200% магрезиста), проверяем наличие юнита в выделенной группе. Если его там нет - наносим 100 ед. от лица получившего урон и добавляем в группу.
Неуязвимость проверяют через даммика с атакой, через приказ, сможет ли атаковать или нет, просто проверка выполнения приказа. Так же пытаются нанести урон и смотрят сколько он отнял здоровья, так можно и определить неуязвимость и вычислить резист юнита к конкретному типу урона.
есть itempool или можно сделать массив типов итемов, и рандомить шанс выпадения, и рандомить тип итема. вбей в поиск, посмотри еще на хайве про itempool или про дроп итемов
Кароче берёшь крит и лайфстил.
Если правильно всё выдавать - будет работать, так что эксперементируй.
Подсказка: в момент замаха крит уже должен быть у юнита.
Более подробно или с примером - мб попозже... Но не ответить хоть что-то - не смог.
на протяжении всей линейки оно оставалось неподвижным и двигалась вместе с костью
Не понимаю, что имеется в виду. Это вроде как взаимоисключающие вещи. Чтобы двигалась вместе с костью — привяжи к кости. Если нужно анимировать только крепление — создай отдельную кость для крепления. Если его вообще не нужно анимировать — просто поставь его в нужные координаты, оно там и будет.
Импортом, молния это что то вроде анимированной текстуры, то есть картинка а само движение, размер и цвет настраивается в скл. таблице, на подобии настройки способностей, но вот только близзарды не сделали нам редактор молний...
Кароче нужно выколупать файл splats \ LightningData.slk и редактировать его в Excel или другом слк редакторе, собственно все редактирование сводится к копи-пасту стандартной молнии и изменения её текстуры, текстуры есть на хайве, можно самому замутить текстуру у молний они не замысловатые.
Отредактированный файл нужно импортировать в карту по тому же пути, так же текстуры если они нестандартные...
Да. Скорость анимации атаки только через модель. Через РО мнельзя заставить быстрее замахнуться или рубануть.
Попробуй триггерно ускорять анимациИ юнита (именно, что все сразу; так оно работает) - по завершении удара возвращать дефолную. И уже, учитывая триггер, подобрять те значения анимации атаки.
Можно через редактор объектов, не изменяя модель. Найди строчки "Графика - Анимация: скорость ходьбы" и "Графика - Анимация: скорость бега" и измени значения, как тебе нужно (уменьшение - ускоряет анимацию, увеличение - замедляет анимацию).
Плохая модель, в ретере у анимаций Death и Deсay вообще нет модели
Если судить по MDL файлу
То модель вообще схлопнута в точку на этих анимациях, поэтому её и не видно, хотя в редакторе всё хорошо, есть анимация разрушения
Можно было бы починить но ретера очень часто выдаёт факапистый МДЛ файл, а сам MDX 1000 рефорджа никак не отредактировать, в любом случае даже если бы был успех, то только через редактирование модели, а это + 4-10 мб за каждую модель, стоит ли оно того? - нет.
Посмотрел другие модели зданий, они все такие, весьма странно, как это в игре работает, всегда имел дело только с моделями персонажей или декором, и такой проблемы не замечалось.
В любом случае кодом это не поправить
» Администрация XGM / Ресурс вместо главной проекта
» WarCraft 3 / Как удалить всех юнитов у бота?
» WarCraft 3 / Помогите сделать способность
» WarCraft 3 / Таймер
» WarCraft 3 / Помогите запустить карту
» WarCraft 3 / Вылет карты
» WarCraft 3 / Триггер смены владельца здания.
» WarCraft 3 / Картостроение
» WarCraft 3 / Улучшение
» WarCraft 3 / Перенос персонажа на другую карту
» WarCraft 3 / вопрос по карте
» Администрация XGM / Баг в подсказках категорий
» WarCraft 3 / Как сделать так когда герой подбирал предмет...
» WarCraft 3 / Как прикрепить область к юниту?
» WarCraft 3 / JNGP на версию 1.31
» WarCraft 3 / ИИ И нестандартные войска
» WarCraft 3 / Не работает ИИ у наг.
» WarCraft 3 / Триггер с шансом
» WarCraft 3 / Создание модели
» WarCraft 3 / native StringHash
» WarCraft 3 / Скорость анимации юнита